package main

import "fmt"

// (1)函数作为参数值
func sayHello(str string) {
	fmt.Printf("调用函数内部的值，Hello:%v\n", str)
}
func q1(name string, f func(string)) {
	fmt.Printf("传入一个值:%v\n", name)
	f(name)
}

// (2)函数作为返回值
func add(a int, b int) int {
	return a + b
}
func sub(a int, b int) int {
	return a - b
}

func q2(s string) func(int, int) int {
	switch s {
	case "+":
		return add
	case "-":
		return sub
	default:
		return nil
	}
}

func main() {
	q1("Tom", sayHello) //函数作为参数值
	s := q2("+")        //函数作为返回值
	fmt.Println(s(1, 2))
}
